import { qrLoginAPI } from '../../utils/api';

interface ScanData {
  sessionId: string;
  qrCode: string;
  scanTime: string;
  deviceInfo: string;
  userInfo: any;
}

Page({
  data: {
    sessionId: '',
    scanTime: '',
    deviceInfo: '',
    userInfo: {},
    isConfirming: false,
    loginSuccess: false,
    showDebug: true, // 默认显示调试信息
    debugInfo: ''
  },

  onLoad(options: any) {
    console.log('扫码确认页面加载，参数:', options);
    
    // 获取扫码数据
    this.getScanData();
    
    // 获取用户信息
    this.getUserInfo();
    
    // 获取设备信息
    this.getDeviceInfo();
    
    // 打印调试信息
    this.printDebugInfo();
  },

  // 获取扫码数据
  getScanData() {
    // 从页面参数或缓存中获取扫码数据
    const scanData = wx.getStorageSync('scanData') || {};
    
    this.setData({
      sessionId: scanData.sessionId || '未知',
      scanTime: scanData.scanTime || new Date().toLocaleString(),
      deviceInfo: scanData.deviceInfo || '未知设备'
    });

    console.log('扫码数据:', scanData);
  },

  // 获取用户信息
  getUserInfo() {
    const userInfo = wx.getStorageSync('userInfo') || {};
    
    this.setData({
      userInfo: userInfo
    });

    console.log('用户信息:', userInfo);
  },

  // 获取设备信息
  getDeviceInfo() {
    const systemInfo = wx.getSystemInfoSync();
    const deviceInfo = `${systemInfo.platform} ${systemInfo.system} ${systemInfo.version}`;
    
    this.setData({
      deviceInfo: deviceInfo
    });

    console.log('设备信息:', systemInfo);
  },

  // 打印调试信息
  printDebugInfo() {
    const debugData = {
      扫码时间: this.data.scanTime,
      SessionID: this.data.sessionId,
      设备信息: this.data.deviceInfo,
      用户信息: this.data.userInfo,
      系统信息: wx.getSystemInfoSync(),
      网络状态: wx.getNetworkType(),
      小程序版本: wx.getAccountInfoSync()
    };

    const debugText = JSON.stringify(debugData, null, 2);
    
    this.setData({
      debugInfo: debugText
    });

    console.log('=== 扫码调试信息 ===');
    console.log('扫码时间:', this.data.scanTime);
    console.log('Session ID:', this.data.sessionId);
    console.log('设备信息:', this.data.deviceInfo);
    console.log('用户信息:', this.data.userInfo);
    console.log('系统信息:', wx.getSystemInfoSync());
    console.log('网络状态:', wx.getNetworkType());
    console.log('小程序版本:', wx.getAccountInfoSync());
    console.log('==================');
  },

  // 确认登录
  async confirmLogin() {
    this.setData({ isConfirming: true });
    
    try {
      console.log('开始确认登录...');
      
      // 构建用户信息
      const userInfo = {
        id: this.data.userInfo.id || Date.now(),
        username: this.data.userInfo.nickName || 'wx_user',
        nickname: this.data.userInfo.nickName || '微信用户',
        avatar: this.data.userInfo.avatarUrl || '',
        openid: this.data.userInfo.openid || '',
        unionid: this.data.userInfo.unionid || ''
      };

      console.log('发送确认登录请求:', {
        sessionId: this.data.sessionId,
        userInfo: userInfo
      });

      // 调用确认登录API
      const result = await qrLoginAPI.confirmLogin(this.data.sessionId, userInfo);
      
      console.log('确认登录成功:', result);
      
      // 显示成功提示
      this.setData({
        loginSuccess: true,
        isConfirming: false
      });

      wx.showToast({
        title: '登录成功！',
        icon: 'success'
      });

      // 保存登录信息
      wx.setStorageSync('loginResult', result);
      
      // 准备用户信息数据
      const userInfoData = {
        nickname: userInfo.nickname || '魔力玩家',
        avatar: userInfo.avatar || '/static/default-avatar.png',
        level: '1',
        gameId: userInfo.username || 'Player001',
        qq: '未设置',
        registerTime: new Date().getFullYear() + '年'
      };

      // 延迟跳转到登录成功页面
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login-success/login-success?userInfo=' + encodeURIComponent(JSON.stringify(userInfoData)),
          success: () => {
            console.log('跳转到登录成功页面');
          },
          fail: (error) => {
            console.error('跳转到登录成功页面失败:', error);
            // 如果跳转失败，回退到首页
            wx.switchTab({
              url: '/pages/index/index'
            });
          }
        });
      }, 2000);

    } catch (error) {
      console.error('确认登录失败:', error);
      
      this.setData({ isConfirming: false });
      
      wx.showToast({
        title: '登录失败，请重试',
        icon: 'error'
      });
    }
  },

  // 取消登录
  cancelLogin() {
    console.log('用户取消登录');
    
    wx.showModal({
      title: '确认取消',
      content: '确定要取消登录吗？',
      success: (res) => {
        if (res.confirm) {
          wx.navigateBack();
        }
      }
    });
  },

  // 切换调试信息显示
  toggleDebug() {
    this.setData({
      showDebug: !this.data.showDebug
    });
  },

  // 关闭成功提示
  closeSuccess() {
    this.setData({
      loginSuccess: false
    });
    
    // 返回上一页
    wx.navigateBack();
  },

  // 页面分享
  onShareAppMessage() {
    return {
      title: '扫码登录确认',
      path: '/pages/qrconfirm/qrconfirm'
    };
  },

  // 页面卸载时清理
  onUnload() {
    console.log('扫码确认页面卸载');
    // 清理缓存数据
    wx.removeStorageSync('scanData');
  }
}); 